package com.zmh.dao;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import com.zmh.entity.BookEntity;
import com.zmh.entity.CatalogEntity;


/** 
 * 章节信息数据库操作类
 * @author zhoumh
 * @version 创建时间：2018年7月15日 上午10:10:10 
 * @Description 
*/
@Mapper
public interface CatalogMapper {
	@Select("SELECT * FROM catalog")
//	@Results({
//		@Result(property = "id",  column = "id"),
//		@Result(property = "uuid", column = "uuid"),
//		@Result(property = "name", column = "name"),
//		@Result(property = "count", column = "author"),
//		@Result(property = "description", column = "description")
//	})
	List<CatalogEntity> getAll();
	/**
	 * 查询书籍的全部章节
	 * @return: List<CatalogEntity>
	 * @author: zhoumh
	 * @version: 创建时间：2018年7月23日 下午4:55:51 
	 * @Description:
	 */
	@Select("SELECT * FROM catalog WHERE bid=#{bid}")
	List<CatalogEntity> getAllByBid(String bid);
	
	/**
	 * 根据书籍UUID和章节名称获取章节信息
	 * @return: BookEntity
	 * @author: zhoumh
	 * @version: 创建时间：2018年7月22日 下午10:11:42 
	 * @Description:
	 */
	@Select("SELECT * FROM catalog WHERE bid = #{bid} AND name = #{name}")
	CatalogEntity getOneByBidName(@Param("bid")String id,@Param("name")String name);
	
	/**
	 * 根据书籍名称查询书籍信息
	 * @return: BookEntity
	 * @author: zhoumh
	 * @version: 创建时间：2018年7月22日 下午10:12:06 
	 * @Description:
	 */
	@Select("SELECT * FROM catalog WHERE name = #{name}")
	CatalogEntity getOneByName(String name);
	
	/**
	 * 根据书籍uuid查询书籍信息
	 * @return: BookEntity
	 * @author: zhoumh
	 * @version: 创建时间：2018年7月22日 下午10:12:06 
	 * @Description:
	 */
	@Select("SELECT * FROM catalog WHERE uuid = #{uuid}")
	CatalogEntity getOneByUuid(String uuid);

	/**
	 * 查询书籍总数
	 * @return: BookEntity
	 * @author: zhoumh
	 * @version: 创建时间：2018年7月22日 下午10:12:06 
	 * @Description:
	 */
	@Select("SELECT count(uuid) FROM catalog WHERE bid=#{bid}")
	int getCountByBid(String bid);
	
	
	@Select("SELECT c.uuid FROM catalog as c INNER JOIN book as b on c.bid=b.uuid WHERE b.description = #{desc} and c.name=#{name}")
	String isExistsCatalog(@Param("desc")String desc,@Param("name")String name);

	/**
	 * 查询章节总数
	 * @return: BookEntity
	 * @author: zhoumh
	 * @version: 创建时间：2018年7月22日 下午10:12:06 
	 * @Description:
	 */
	@Select("SELECT count(uuid) FROM catalog WHERE bid=#{bid} limit #{begin},#{size}")
	List<CatalogEntity> getPageByBid(@Param("bid")String bid, @Param("begin")int begin, @Param("size")int size);
	
	@Insert("INSERT INTO catalog(uuid,bid,name,count,ctime,description) VALUES(uuid(), #{bid}, #{name}, #{count}, #{ctime}, #{description})")
	int insert(CatalogEntity catalog);

	@Update("UPDATE catalog SET name=#{name},count=#{count} WHERE uuid =#{uuid}")
	int update(CatalogEntity catalog);

	@Delete("DELETE FROM catalog WHERE uuid =#{uuid}")
	int delete(String uuid);
}
